package com.vanysoft.business.kpi.service.impl;


import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.vanysoft.business.kpi.dao.KpiItemRuleMapper;
import com.vanysoft.business.kpi.entity.KpiItemRule;
import com.vanysoft.business.kpi.service.KpiItemRuleService;
import com.vanysoft.framework.config.database.BaseServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author yu_chen
 * @date 2018-07-09 14:27
 **/
@Service

public class KpiItemRuleServiceImpl extends BaseServiceImpl<KpiItemRuleMapper, KpiItemRule> implements KpiItemRuleService {
    private final Log log = LogFactory.getLog(getClass());
    @Autowired
    private KpiItemRuleMapper kpiItemRuleMapper;


    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean insertAllKpiRule(List<KpiItemRule> kpiItemRuleList, String userName) {
        log.info("导入数据：" + kpiItemRuleList.toString());
        //导入的数据处理
        for (KpiItemRule kpiItemRule : kpiItemRuleList) {
            //将目前的数据置为无效
            //然后新增一些
            List<KpiItemRule> kpiItemRules = kpiItemRuleMapper.selectList(new EntityWrapper<KpiItemRule>()
                    .eq("kpi_item_id", kpiItemRule.getKpiItemId())
                    .eq("rule_scope", kpiItemRule.getRuleScope())
            );
            if (kpiItemRules != null && kpiItemRules.size() > 0) {
                KpiItemRule oldKpiItemRule = kpiItemRules.get(0);
                oldKpiItemRule.setIsValid("N");
                oldKpiItemRule.setUpdateTime(LocalDateTime.now());
                oldKpiItemRule.setUpdateUser(userName);
                kpiItemRuleMapper.updateById(oldKpiItemRule);
            }
            //然后在插入新的记录
            kpiItemRule.setWeight(kpiItemRule.getWeight() * 100);
            if (StringUtils.isNotEmpty(kpiItemRule.getRoleChosen())) {
                kpiItemRule.setRoleChosen(kpiItemRule.getRoleChosen() + "," + kpiItemRule.getRoleChosen() + " admin");
            }
            kpiItemRule.setCreateTime(LocalDateTime.now());
            kpiItemRule.setUpdateTime(LocalDateTime.now());
            kpiItemRule.setUpdateUser(userName);
            kpiItemRule.setCreateUser(userName);
            kpiItemRuleMapper.insert(kpiItemRule);
        }
        return true;
    }
}